//
//  WZUserViewModel.swift
//  weibo
//
//  Created by mac on 16/2/27.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit
import AFNetworking
class WZUserViewModel: NSObject {
    
    
    static let shareInstance = WZUserViewModel()
    
    var userModel: WZUserModel?
    
    
    var isLogin: Bool   {
        
        return userModel?.access_token != nil ? true : false
        
    }
    
    
    //    MARK:重写了access_token的get方法这是个计算型属性，每次使用都会调用
    var access_token: String?{
        
        return (userModel?.access_token)
        
    }
    
    
    //    MARK:重写构造方法为userModel赋值
    
    override init() {
        userModel = WZUserModel.readModel("userInfo.aa")
        
    }
    
    
    
    //MARK: 通过code获取用户信息access_token
    
    
    
    func getAccessToken(code: String,success:()->(),faile:()->()){
        
        let manager = WZHTTPClient.shareInstance
        /*
        client_id	true	string	申请应用时分配的AppKey。
        client_secret	true	string	申请应用时分配的AppSecret。
        grant_type	true	string	请求的类型，填写authorization_code
        
        grant_type为authorization_code时
        必选	类型及范围	说明
        code	true	string	调用authorize获得的code值。
        redirect_uri	true	string	回调地址，需需与注册应用里的回调地址一致
        */
        
        let parameter = ["client_id": client_id,
            "client_secret":client_secret,
            "grant_type":"authorization_code",
            "code":code,
            "redirect_uri": redirect_uri]
        
        manager.loadRequest(.POST, URLString: "https://api.weibo.com/oauth2/access_token", parameters: parameter, success: { (JSON) -> () in
            if let dic = JSON as? [String:NSObject]{
                
                let userModel = WZUserModel(dict: dic)
                
                self.getUserInfo(userModel,success: success,faile: faile)
            }
            }) { (error) -> () in
                print(error)
        }
        
    }
    
    //MARK: 通过userModel获取用户信息
    func getUserInfo(userModel:WZUserModel,success:()->(),faile:()->()){
        let manager = WZHTTPClient.shareInstance
        //拼接参数
        /*
        access_token	true	string	采用OAuth授权方式为必填参数，OAuth授权后获得。
        uid	false	int64	需要查询的用户ID。
        screen_name	false	string	需要查询的用户昵称。
        注意事项
        参数uid与screen_name二者必选其一，且只能选其一；
        */
        let parameter = ["access_token":userModel.access_token ?? "","uid":userModel.uid ?? ""]
        
        
        manager.loadRequest(.GET, URLString: "https://api.weibo.com/2/users/show.json", parameters: parameter, success: { (JSON) -> () in
            
            if let dict = JSON as? [String: NSObject]{
                
                userModel.profile_image_url = dict["profile_image_url"] as? String
                //
                userModel.screen_name = dict["screen_name"] as? String
                
                userModel.savaUserModel("userInfo.aa")
                
                self.userModel = userModel
                
                success()
            }
            
            }) { (error) -> () in
                print(error)
        }
        
        
    }
    
}
